/**
 * @param {number[]} nums
 * @return {number}
 */
 var missingNumber = function(nums) {
    // 排序
    // function func(x,y){
    //     return x-y;
    // }
    // nums.sort(func);
    // for(var i=0;i<nums.length;i++) {
    //     if(nums[i]!=i)
    //         return i;
    // }
    // return i;
   
    // 哈希表
    // let set = new Set();
    // const n=nums.length;
    // for(let i=0;i<n;i++){
    //     set.add(nums[i]);
    // }
    // let missing=-1;
    // for(let i=0;i<=n;i++){
    //     if(!set.has(i)){
    //         missing=i;
    //         break;
    //     }
    // }
    // return missing;

    // 位运算
    // const n=nums.length;
    // let arr=0;
    // for(let i=0;i<n;i++){
    //     arr^=nums[i];
    //     // console.log(arr);
    // }
    // for(let i=0;i<=n;i++){
    //     arr^=i;
    // }
    // return arr;

    // 数学法
    const n=nums.length,sum=0;
    const count=Math.floor(n*(n+1)/2);
    for(let i=0;i<n;i++){
        sum+=nums[i];
    }
    return count-sum;
};